// 对axios  进行二次封装
// 此文件就是把公共的东西抽离出来放到这里
// 基于axios 封装的请求模块
import axios from 'axios' // 引入axios
import { Message } from 'element-ui'
import JSONbig from 'json-bigint'

const ajax = axios.create({
  baseURL: ' http://api-toutiao-web.itheima.net', // 请求的基础路径
  // 具体请求的时候  如果有baseURL就会覆盖全局
  transformResponse: [function (data) {
    try {
      return JSONbig.parse(data)
    } catch (err) {
      console.error('格式转换错误', err)
      return data
    }
  }]
})

// 添加响应拦截器
ajax.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response
}, function (error) {
  // console.dir(error)
  // 对响应错误做点什么
  const errTextObj = { // 自己写的中英文对照(后台给的错误提示太....了)
    'Please verify your real information in app.': '手机号只能用固定的',
    'Invalid code.': '验证码错误',
    'User must be authorized.': '身份验证失败',
    'Invalid cover param.': '封面图片有问题_请根据选择的数量传递'
  }
  const messageKey = error.response.data.message // 取出后台返回的message信息
  // console.dir(error)
  Message({
    message: errTextObj[messageKey],
    type: 'error',
    onClose () { // 等到弹窗消失跳转
      sessionStorage.clear() // 清空
      if (error.response.status === 401) window.location.href = '/#/login'
    }
  })

  return Promise.reject(error)
})

export default ajax // 导出请求方式

// 外部引入
// import request from  '路径/utils/request.js'

/**
 *
 *
 *
 * /
request({
  // url: '/具体的路径'
  // method: 'post'
  // data: 请求体传参
})
**/
